/**
 * 筹码选择页面的逻辑
 */

// 封盘时，将所有投注按钮置灰
var fengpan = false;
function on_fengpan() {
    if (fengpan) return;
    fengpan = true;
    reset_counter();
    $(".footer .fp-clue").show();
}

// 开盘了
function on_kaipan() {
    if (!fengpan) return;
    fengpan = false;
    $(".footer .fp-clue").hide();
}

// 当前是否允许下注
var _enableBet = true;
Classify.query("settings", "bet_enable", false, "1", function(v) {
    _enableBet = v == '1';
});

// 加个标题
function add_bet_th(name, container) {
    container.append('<ul class="am-avg-sm-1 th"><li>' + name + '</li></ul>');
} 

// 添加一个下注项
function add_bet_item(key, title, container) {
    // 取得赔率
    if (key.indexOf(":") > -1)
        key = key.split(":")[0];
    var rate = gameRule.map[key] ? gameRule.map[key].rate : "--";

    var div = $('<li class="bet-item"></li>');
    div.append('<span class="title">' + title + '</span>');
    div.append('<span class="rate">' + rate + '</span>');
    div.append('<div class="clear" style="display:none"><label>' + key + '</label></div>');
    container.append(div);
}

// 保证key不变
function add_bet_item2(key, title, container) {
    var k = key;
    if (key.indexOf(":") > -1)
        key = key.split(":")[0];
    var rate = gameRule.map[key] ? gameRule.map[key].rate : "--";

    var div = $('<li class="bet-item"></li>');
    div.append('<span class="title">' + title + '</span>');
    div.append('<span class="rate">' + rate + '</span>');
    div.append('<div class="clear" style="display:none"><label>' + k + '</label></div>');
    container.append(div);
}

// 刷新赔率信息
function refresh_bet_items() {
    var arr = $(".bet-item");
    for (var i = 0; i < arr.length; i++) {
        var e = $(arr[i]);
        var key = e.find("label").html();
        if (key.startsWith('一:')) key = '一';
        if (key.startsWith('二:')) key = '二';
        if (key.startsWith('三:')) key = '三';
        if (key.startsWith('四:')) key = '四';
        if (key.startsWith('五:')) key = '五';
        if (key.startsWith('六:')) key = '六';
        if (key.startsWith('七:')) key = '七';
        if (key.startsWith('八:')) key = '八';
        if (key.startsWith('正:')) key = '正';
        if (key.startsWith('任1:')) key = '任1';
        var rate = gameRule.map[key] ? gameRule.map[key].rate : "--";
        e.find(".rate").html(rate);
    }

    var arr = $(".special-rate");
    for (var i = 0; i < arr.length; i++) {
        var e = $(arr[i]);
        var key = e.attr("key");
        var rate = gameRule.map[key] ? gameRule.map[key].rate : "--";
        e.html(rate);
    }
}

// 扫描下所有的筹码录入框，并同步之
function scan_counter_confirm() {
    // 读取保存的数据
    var curr = 100;
    try {
        if (localStorage) {
            var v = localStorage.getItem("com.cp-zy-counter");
            if (v) curr = parseInt(v);
        }
    }
    catch(e) {
        console.error(e);
    }

    var arr = $(".footer input");
    arr.val(curr);

    // 确定按钮的处理
    var onOk = function(e) {
        if (!can_bet()) {
            alert2("已封盘，不能下注！");
            return;
        }

        var data = get_counter_list();
        if (isEmpty(data)) {
            alert2("下注内容不正确，请重新下注！");
            return;
        }

        // 显示确认提示框
        show_bet_confirm_list(data);
    };
    $(".footer .ok").click(onOk);

    // 重置按钮的处理
    var onReset = function(e) {
        reset_counter();
    };
    $(".footer .reset").click(onReset);

    // 确定下注的处理
    var hadclick = 0;
    $("#bet_clue .ok").click(function() {
        if (new Date().getTime() - hadclick < 1000) return;
        hadclick = new Date().getTime();
        do_bet();
    });
}

// 下注的流程
function do_bet() {
    // 关闭窗口
    $("#bet_clue").modal("close");

    if (!can_bet()) {
        reset_counter();
        alert2("已经封盘，下注失败。");
        return;
    }

    // 取得列表
    var data = get_counter_list();

    // 由特定的游戏再解析一把
    if (window.unpack_bet_list)
        data = unpack_bet_list(data);
    console.log("下注", "第" + Lottery.curr() + "期", data);
    Lottery.ok(data, Lottery.curr(), "phone");
}

// 计算下注的注单数量和总额
function calc_bet_count() {
    var count = 0, total = 0;
    if (window.calc_bet_list) {
        var arr = calc_bet_list(get_counter_list());
        count = arr[0];
        total = arr[1];
    }
    else {
        // 走统一的流程
        var v = $(".footer input").val().trim();
        v = parseInt(v);
        var arr = $(".bet-active label");
        for (var i = 0; i < arr.length; i++) {
            count++;
            total += v;
        }
    }
    return [count, total];
}

// 显示下注确认提示框
function show_bet_confirm_list(data) {
    // 填充内容
    var count = 0, total = 0;
    var table = $("#bet_clue tbody");
    table.empty();

    // 对数据做下加工(各游戏自行定义)
    if (window.parse_bet_list) {
        data = parse_bet_list(get_counter_list());
    }

    for (var k in data) {
        // 取得赔率
        var key = k;
        if (key.indexOf(":") > -1)
            key = key.split(":")[0];
        var rate = gameRule.map[key] ? gameRule.map[key].rate : "--";

        // 取得显示的名称
        var name = gameRule.getTargetName(k);
        if (window.parse_target_name)
            name = parse_target_name(k);

        var tr = $("<tr value='" + k + "'></tr>");
        tr.append("<td class='c1'>" + name + "</td>");
        tr.append("<td class='c2'>" + rate + "</td>");
        tr.append("<td class='c3'>" + parseInt(data[k]/100) + "</td>");
        table.append(tr);
    }
    var w = $("body").width;
    if (w > 300) w = 300;
    $("#bet_clue").modal({
        width: w
    });
}

// 扫描所有的下注项，并关注其选中
function scan_bet_items() {
    var onClick = function(e) {
        if (!_enableBet) {
            alert2("游戏暂时禁止下注！");
            return;
        }
        if (!can_bet()) return;

        var item = $(e.currentTarget);
        if (item.attr("class").indexOf("bet-active") != -1) {
            // 当前处于选中状态，反选之
            if ($(e.target).attr("type") == "number") return;
            item.attr("class", "bet-item");
            return;
        }

        // 需要选中
        item.attr("class", "bet-item bet-active");

        // 计算总的下注注数
        refresh_zhudan();
    };
    var arr = $(".bet-item");
    for (var i = 0; i < arr.length; i++) {
        var e = $(arr[i]);
        e.click(onClick);
    }
}

// 取得投注列表
function get_counter_list() {
    // 只获取选中的标签页
    var index = get_show_tab();

    var data = {};
    var v = $(".footer input").val().trim();
    v = parseInt(v);
    var arr = $(".page" + index + " .bet-active label");
    for (var i = 0; i < arr.length; i++) {
        data[$(arr[i]).html()] = v * 100;
    }

    // 额外的注单
    if (window.extra_bet_list)
        data = extra_bet_list(data);

    // 返回结果
    return data;
}

// 重置所有数据
function reset_counter() {
    var arr = $(".bet-active");
    for (var i = 0; i < arr.length; i++) {
        var e = $(arr[i]);
        e.attr("class", "bet-item");
    }

    if (window.extra_reset_counter) extra_reset_counter();

    // 重绘制总的注单
    refresh_zhudan();
}

// 刷新注单信息
function refresh_zhudan() {
    // 取得列表
    var data = get_counter_list();

    // 由特定的游戏再解析一把
    if (window.unpack_bet_list)
        data = unpack_bet_list(data);

    var count = 0;
    var total = 0;
    for (var i in data) {
        if (i == 'group') continue;
        count++;
        total += data[i];
    }
    $(".footer label .number").html(count);
    $($("#bet_clue .zushu .red")[0]).html(count);
    $($("#bet_clue .zushu .red")[1]).html((total/100).toFixed(2));

    $(".menu-left a.active").attr("class", count > 0 ? "active hasbet" : "active");
}
